1 <?php
2     
// check this file's MD5 to make sure it wasn't called before
3     $prevMD5=@implode(
'', @file(dirname(__FILE__).'/setup.md5'));
4     $thisMD5=md5(@implode(
'', @file("./updateDB.php")));
5     
if($thisMD5==$prevMD5){
6         $setupAlreadyRun=
true;
7     }
else{
8         
// set up tables
9         
if(!isset($silent)){
10             $silent=
true;
11         }
12
13         
// set up tables
14         setupTable(
'schools', "create table if not exists `schools` ( `id` INT unsigned not null auto_increment , primary key (`id`), `name` VARCHAR(40) not null ) CHARSET utf8", $silent);
15         setupTable(
'departments', "create table if not exists `departments` ( `id` INT unsigned not null auto_increment , primary key (`id`), `name` VARCHAR(40) not null , `school` INT unsigned not null ) CHARSET utf8", $silent);
16         setupIndexes(
'departments', array('school'));
17         setupTable(
'class_time_table', "create table if not exists `class_time_table` ( `id` INT unsigned not null auto_increment , primary key (`id`), `day` VARCHAR(40) not null , `time_start` TIME not null , `time_end` TIME not null , `unit_code` VARCHAR(40) not null , `venue` VARCHAR(40) not null , `school` INT unsigned not null , `department` INT unsigned not null , `year_of_study` VARCHAR(40) not null ) CHARSET utf8", $silent);
18         setupIndexes(
'class_time_table', array('school','department'));
19         setupTable(
'exam_time_table', "create table if not exists `exam_time_table` ( `id` INT unsigned not null auto_increment , primary key (`id`), `date` DATE not null , `time_start` TIME not null , `time_end` TIME not null , `unit_code` VARCHAR(40) not null , `venue` VARCHAR(40) not null , `school` INT unsigned not null , `department` INT unsigned not null , `year_of_study` VARCHAR(40) not null ) CHARSET utf8", $silent);
20         setupIndexes(
'exam_time_table', array('school','department'));
21         setupTable(
'personal_time_table', "create table if not exists `personal_time_table` ( `id` INT unsigned not null auto_increment , primary key (`id`), `day` VARCHAR(40) not null , `time_start` TIME not null , `time_end` TIME not null , `activity` VARCHAR(40) not null ) CHARSET utf8", $silent);
22         setupTable(
'student_details', "create table if not exists `student_details` ( `id` INT unsigned not null auto_increment , primary key (`id`), `full_name` VARCHAR(40) not null , `school` INT unsigned not null , `department` INT unsigned not null , `year_of_study` VARCHAR(40) not null , `reg_no` VARCHAR(40) not null , unique `reg_no_unique` (`reg_no`)) CHARSET utf8", $silent, array( "ALTER TABLE `student_details` ADD UNIQUE `reg_no_unique` (`reg_no`)"));
23         setupIndexes(
'student_details', array('school','department'));
24         setupTable(
'notices', "create table if not exists `notices` ( `id` INT unsigned not null auto_increment , primary key (`id`), `notice` TEXT not null , `school` INT unsigned not null , `department` INT unsigned not null , `year_of_study` VARCHAR(40) not null , `date` DATE ) CHARSET utf8", $silent);
25         setupIndexes(
'notices', array('school','department'));
26
27
28         
// save MD5
29         
if($fp=@fopen(dirname(__FILE__).'/setup.md5', 'w')){
30             fwrite($fp, $thisMD5);
31             fclose($fp);
32         }
33     }
34
35
36     function setupIndexes($tableName, $arrFields){
37         
if(!is_array($arrFields)){
38             
return false;
39         }
40
41         
foreach($arrFields as $fieldName){
42             
if(!$res=@db_query("SHOW COLUMNS FROM `$tableName` like '$fieldName'")){
43                 
continue;
44             }
45             
if(!$row=@db_fetch_assoc($res)){
46                 
continue;
47             }
48             
if($row['Key']==''){
49                 @db_query(
"ALTER TABLE `$tableName` ADD INDEX `$fieldName` (`$fieldName`)");
50             }
51         }
52     }
53
54
55     function setupTable($tableName, $createSQL=
'', $silent=true, $arrAlter=''){
56         
global $Translation;
57         ob_start();
58
59         echo
'<div style="padding: 5px; border-bottom:solid 1px silver; font-family: verdana, arial; font-size: 10px;">';
60
61         
// is there a table rename query?
62         
if(is_array($arrAlter)){
63             $matches=array();
64             
if(preg_match("/ALTER TABLE `(.*)` RENAME `$tableName`/", $arrAlter[0], $matches)){
65                 $oldTableName=$matches[
1];
66             }
67         }
68
69         
if($res=@db_query("select count(1) from `$tableName`")){ // table already exists
70             
if($row = @db_fetch_array($res)){
71                 echo str_replace(
"<TableName>", $tableName, str_replace("<NumRecords>", $row[0],$Translation["table exists"]));
72                 
if(is_array($arrAlter)){
73                     echo
'<br>';
74                     
foreach($arrAlter as $alter){
75                         
if($alter!=''){
76                             echo
"$alter ... ";
77                             
if(!@db_query($alter)){
78                                 echo
'<span class="label label-danger">' . $Translation['failed'] . '</span>';
79                                 echo
'<div class="text-danger">' . $Translation['mysql said'] . ' ' . db_error(db_link()) . '</div>';
80                             }
else{
81                                 echo
'<span class="label label-success">' . $Translation['ok'] . '</span>';
82                             }
83                         }
84                     }
85                 }
else{
86                     echo $Translation[
"table uptodate"];
87                 }
88             }
else{
89                 echo str_replace(
"<TableName>", $tableName, $Translation["couldnt count"]);
90             }
91         }
else{ // given tableName doesn't exist
92
93             
if($oldTableName!=''){ // if we have a table rename query
94                 
if($ro=@db_query("select count(1) from `$oldTableName`")){ // if old table exists, rename it.
95                     $renameQuery=array_shift($arrAlter);
// get and remove rename query
96
97                     echo
"$renameQuery ... ";
98                     
if(!@db_query($renameQuery)){
99                         echo
'<span class="label label-danger">' . $Translation['failed'] . '</span>';
100                         echo
'<div class="text-danger">' . $Translation['mysql said'] . ' ' . db_error(db_link()) . '</div>';
101                     }
else{
102                         echo
'<span class="label label-success">' . $Translation['ok'] . '</span>';
103                     }
104
105                     
if(is_array($arrAlter)) setupTable($tableName, $createSQL, false, $arrAlter); // execute Alter queries on renamed table ...
106                 }
else{ // if old tableName doesn't exist (nor the new one since we're here), then just create the table.
107                     setupTable($tableName, $createSQL,
false); // no Alter queries passed ...
108                 }
109             }
else{ // tableName doesn't exist and no rename, so just create the table
110                 echo str_replace(
"<TableName>", $tableName, $Translation["creating table"]);
111                 
if(!@db_query($createSQL)){
112                     echo
'<span class="label label-danger">' . $Translation['failed'] . '</span>';
113                     echo
'<div class="text-danger">' . $Translation['mysql said'] . db_error(db_link()) . '</div>';
114                 }
else{
115                     echo
'<span class="label label-success">' . $Translation['ok'] . '</span>';
116                 }
117             }
118         }
119
120         echo
"</div>";
121
122         $
out=ob_get_contents();
123         ob_end_clean();
124         
if(!$silent){
125             echo $
out;
126         }
127     }
128 ?>



Hệ thống xếp lịch học tín chỉ cho sinh viên CNTT trên PHP & MySQL 111.106 lượt xem

Gõ tìm kiếm nhanh...